#include "stdlib.h"
#include "sys/time.h"
#include "string.h"
#include "stdio.h"
long app_common_getCurrentTime(void) 
{
    struct timeval tv;
    //获取当前时间
    gettimeofday(&tv, NULL);

    return tv.tv_sec * 1000 + tv.tv_usec / 1000;
    
}

/**
 * @brief 将字符串转换为十六进制字符串
 */
char *app_common_charsToHexstr(char *chars, int chars_len)
{
    //申请十六进制 字符串的内存空间
    char *hexstr = (char *)malloc(chars_len * 2 + 1);
    //遍历chars中的每个字符，转换为两个十六进制字符，存到hexstr
    for (int i = 0; i < chars_len; i++)
    {
        sprintf(hexstr + i * 2, "%02x", chars[i]);
    }
    //添加字符串结束符
    hexstr[chars_len * 2] = '\0';
    //返回十六进制字符串
    return hexstr;
    
}

/**
 * @brief 将十六进制字符串转换为字符串
 */

char *app_common_hexstrToChars(char *hexstr, int *chars_len)
{
        // 十六进制字符串长度
        int hexstr_len = strlen(hexstr);
        // 保存字符数组的长度
        *chars_len = hexstr_len / 2;
    
        // 申请字符数组的内存空间
        char *chars = (char *)malloc(*chars_len);
        // 以2个单位遍历十六进制字符串中的每个字符，转换为对应的字符，并存入chars中
        // 61626364 => abcd
        for (int i = 0; i < hexstr_len-1; i=i+2)
        {
            sscanf(hexstr+i, "%02x", (unsigned int *)(chars+i/2));
        }
    
        // 返回字符数组
        return chars;

}
